#ifndef __WxPointedSticksInteractor_h
#define __WxPointedSticksInteractor_h
#include <mitkStateMachine.h>
#include <itkLandmarkBasedTransformInitializer.h>
#include <mitkImage.h>
#include <itkImage.h>
#include <mitkSurface.h>
#include <mitkDataNode.h>
#include "WxExtentionExports.h"

namespace mitk{
class WxExtention_EXPORT WxPointedSticksInteractor:public StateMachine
{
public:
        mitkClassMacro(WxPointedSticksInteractor, StateMachine);
        mitkNewMacro2Param(Self,const char*,DataNode* );
	void SetRouteTipPoint(mitk::Point3D Tip);
	mitk::Point3D GetRouteTipPoint();
	void SetRouteInsertPoint(mitk::Point3D InsertPoint);
	mitk::Point3D GetRouteInsertPoint();
        mitk::Point3D GetRotation();
        void SetRotation( mitk::Point3D rotation);
        void Roll(double angle);
        void Elevation(double angle);
        void Azimuth(double angle);

protected:
	virtual bool ExecuteAction( Action* action, mitk::StateEvent const* stateEvent );	
        WxPointedSticksInteractor(const char * type,DataNode*normalRouteModel);
        ~WxPointedSticksInteractor(void);
        DataNode* m_normalRouteModel;
        Surface* m_normalRouteModelSurface;
        Point2D m_CursorOld2d;
        Vector2D m_v2dOnViewPlane;
        Vector3D m_v3dModelDirection;
        Point3D m_OriginOld;
        PlaneGeometry::Pointer m_ViewPlaneGeometry;
        double m_VecLength3d;
};
}
#endif //__WxPointedSticksInteractor_
